//********************************************************************************************************************//
//ORGANIZATION:
//AUTHOR: bpeng(bogers.peng@gmail.com)
//SUMMARY:
//********************************************************************************************************************//
#ifndef NATIVE_SYSTEM_BASE_PRECOMPILED_H
#define NATIVE_SYSTEM_BASE_PRECOMPILED_H

#include <string.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
#include <sys/stat.h>
#include <string>
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#include <map>
#include <memory>
#include <utility>
#include <stdexcept>
#include <bitset>
#include <cstdint>
#include <cctype>
#include <algorithm>
#include <functional>

using namespace std;
//********************************************************************************************************************//
//********************************************************************************************************************//
#ifdef _MSC_VER
#define NATIVE_COMPILER_MSC
#if _MSC_VER == 1200
#define NATIVE_COMPILER_VC6
#elif _MSC_VER == 1310
#define NATIVE_COMPILER_VC2003
#elif _MSC_VER == 1400
#define NATIVE_COMPILER_VC2005
#elif _MSC_VER == 1600
#define NATIVE_COMPILER_VC2010
#endif
#elif _MSC_VER == 1700
#define NATIVE_COMPILER_VC2012
#endif

#ifdef __BORLANDC__
#define NATIVE_COMPILER_BCB
#if __BORLANDC__  >= 0x0560 && __BORLANDC__ <= 0x0569
#define NATIVE_COMPILER_BCB6
#elif __BORLANDC__ >= 0x0550 && __BORLANDC__ <= 0x0559
#define NATIVE_COMPILER_BCB5
#elif __BORLANDC__ >= 0x0570
#define NATIVE_COMPILER_BCB2006
#endif
#endif

#ifdef __GNUC__
#define NATIVE_COMPILER_GCC
#if __GNUC__ == 2
#define NATIVE_COMPILER_GCC2X
#elif __GNUC__ == 3
#define NATIVE_COMPILER_GCC3X
#elif __GNUC__ == 4
#define NATIVE_COMPILER_GCC4X
#endif
#endif
//********************************************************************************************************************//
//********************************************************************************************************************//
#ifdef NATIVE_COMPILER_MSC
#include <windows.h>
#include <typeinfo.h>
#endif

#ifdef NATIVE_COMPILER_BCB
#endif

#ifdef NATIVE_COMPILER_GCC
#endif
//********************************************************************************************************************//
//********************************************************************************************************************//
#ifdef NATIVE_COMPILER_MSC
#ifdef _M_IX86
#define NATIVE_INSTRUCTION_X86
#endif
#ifdef _M_X64
#define NATIVE_INSTRUCTION_X64
#endif
#ifdef _M_IA64
#define NATIVE_INSTRUCTION_IA64
#endif
#endif

#ifdef NATIVE_COMPILER_BCB
#endif

#ifdef NATIVE_COMPILER_GCC
#endif
//********************************************************************************************************************//
//********************************************************************************************************************//
#ifdef NATIVE_COMPILER_MSC
#define NATIVE_OS_WINDOWS
#ifdef _WIN32
#define NATIVE_OS_WIN32
#endif
#ifdef _WIN64
#define NATIVE_OS_WIN64
#endif
#endif

#ifdef NATIVE_COMPILER_BCB
#endif

#ifdef NATIVE_COMPILER_GCC
#endif
//********************************************************************************************************************//
//********************************************************************************************************************//
#ifdef NATIVE_COMPILER_MSC
#ifdef _UNICODE
#define NATIVE_CHARSET_UNICODE
#else
#define NATIVE_CHARSET_ANSI
#endif
#endif
//********************************************************************************************************************//
//********************************************************************************************************************//
#ifdef NATIVE_COMPILER_MSC
#define NATIVE_LIBRARY_EXPORT __declspec(dllexport)
#else
#define NATIVE_LIBRARY_EXPORT
#endif
//********************************************************************************************************************//
//********************************************************************************************************************//
#define COMMA ,

#endif
